#ifndef MYTCP_NET_ARP_H
#define MYTCP_NET_ARP_H

#include <stdint.h>
#include <stddef.h>

#ifdef __cplusplus
extern "C" {
#endif

int arp_init(void* netif_handle, const uint8_t src_mac[6], uint32_t src_ip);
int arp_input(const uint8_t* pkt, size_t len); // 处理收到的以太帧（由 ip_input 调用）
int arp_resolve(uint32_t ip, uint8_t out_mac[6]); // 立即查找缓存，找到返回0并填充 out_mac，否则返回 -1
int arp_queue_frame(uint32_t dst_ip, const uint8_t* frame, size_t len); // 当MAC未知时队列化，ARP回复后发送
void arp_tick(void); // 需要定期调用（清理超时，重发ARP请求）

#ifdef __cplusplus
}
#endif

#endif // MYTCP_NET_ARP_H
